//

//  WBHomeController.swift
//  微博
//
//  Created by lipengfei on 15/9/3.
//  Copyright © 2015年 lipengfei. All rights reserved.
//

import UIKit
import SVProgressHUD
/// 如何让微博内容显示出来
// 1.微博模型 -> 存储微博的内容属性
// 2.微博视图模型  ->访问网络，获取微博内容，以及视图的逻辑处理
// 3.微博视图   -> 显示排版 视图模型中的数据

class WBHomeController: WBBaseTableViewController {
///  微博列表视图模型
    private lazy var statusListViewModel = WBStatusListViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if !WBUserAccountViewModel.sharedUserAccount.userLogin
        {
            visitorLoginView?.setAttr(nil, textMess: "我不怕前任阻挡，只怕自己投降！")
            return
        }
        //注册可重用cell
        tableView.registerClass(WBStatusForwardCell.self, forCellReuseIdentifier: WBStatusForwardCellID)
        tableView.registerClass(WBStatusNormalCell.self, forCellReuseIdentifier: WBStatusNormalCellID)
        
        tableView.estimatedRowHeight = 200
        tableView.rowHeight = 400
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
        loadData()
        
    }
///  加载微博数据
    func loadData(){
        statusListViewModel.loadStatus().subscribeNext({ (error) -> Void in
            print(error)
            SVProgressHUD.showInfoWithStatus("您的网络不给力")
            }) { () -> Void in
                self.tableView.reloadData()
        }
    }
}

extension WBHomeController
{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return (statusListViewModel.statuses.count)
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let viewModel = statusListViewModel.statuses[indexPath.row]
        let cell = tableView.dequeueReusableCellWithIdentifier(viewModel.cellID, forIndexPath: indexPath) as! WBStatusCell
        cell.statusViewModel = viewModel
        return cell
    }
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        // 获取模型
        let viewModel = statusListViewModel.statuses[indexPath.row]
        if viewModel.rowHeight > 0{
            print("缓存中获取行高")
            return viewModel.rowHeight
        }
        //获取 cell
        let cell = tableView.dequeueReusableCellWithIdentifier(viewModel.cellID) as! WBStatusCell
        
        viewModel.rowHeight = cell.rowHeight(viewModel)
         return viewModel.rowHeight
    }
}
